package com.linwen.dataStructure.map;
/**
 * java中 
 *  < 小于号  > 大于号
 * << 向左移位 >> 向右移位
 * <<<无符号向左移位 >>> 无符号向右移位
 * |=  按位或
 * &= 按位与
 * hashmap中主要有以下几个重要的参数值的注意：
 * 		size： map中的K-V数量，记录了当前map中已有的K-V数量
 * 		loadFactor： 装载因子，用来衡量map的满的程度，默认值为0.75
 * 		threshold： 临界值，当map中的K-V数量到达临界值之后，map就会选择自动扩容
 * 		capacity： 容量，map中可以盛放的最大K-V数量，如果不指定map的初始值容量，默认容量为16
 *  如果用户通过构造函数指定一个数字作为map的初始容量，那么hashmap会  选择第一个大于该数字的2的幂作为hashmap的初始容量！！！
 *  eg：new HashMap<Integer, String>(1)   1--》1   6--》8   15--》16
 *  扩容：对于一个默认的hashmap来说，当其size大于threshold=capacity*loadFactor（临界值=容量*装载因子）的时候，就会触发扩容！！！
 *  为什么建议hashmap初始化hashmap的容量：当我们初始化一个hashmap的时候建议初始化hashmap的容量，因为如果当容量很大的时候，hashmap
 *  	要不断的扩容，而扩容每次都要重建hash表， 是非常影响性能的！！！
 * 如何初始化一个map的容量大小：如果你要创建一个容量为7的map，那么你会简单的初始化为new HashMap<>(7)，这样初始化的map容量为8，
 *		满足了你的需求，但是还要考虑，当你添加元素到8*0.75=6时那么hashmap又会自动扩容到16。所以在初始化的时候应该要初始化为16。
 *		公式为expectedSize/0.75+1。这样实际上是以内存换性能的做法，但是我们一般认为内存是一种比较富裕的资源，性能即时间才是我们要节省的
 *
 * */
import java.util.HashMap;
import java.util.Map;

public class HashMapTest {
	public static void main(String[] args) {
		Map<Integer, String> map = new HashMap<>();
		map.put(1, "attribute1");
		System.out.println(map);
		int n=2;
		n &= n>>>1;
		System.out.println(n);
		System.out.println(1 < 3);
	}
}
